package matheus.tp01cg.objetosdedesenho.recorte;

import matheus.tp01cg.objetosdedesenho.Coords;

public final class FabricaDeRecorte {
	public static enum AlgoritmoRecorteReta {
		COHEN_SUTHERLAND, LIANG_BARSKY
	}

	public AlgoritmoRecorteReta algoritmoRecorteReta;

	public FabricaDeRecorte(AlgoritmoRecorteReta algoritmoRecorteReta) {
		this.algoritmoRecorteReta = algoritmoRecorteReta;
	}

	public Recorte criar(Coords limMin, Coords limMax) {
		switch (algoritmoRecorteReta) {
		case COHEN_SUTHERLAND:
			return new CohenSutherland(limMin, limMax);
		case LIANG_BARSKY:
			return new LiangBarsky(limMin, limMax);
		default:
			return null;
		}
	}
}
